Video context popups

ABSTRACT

Video context popups are disclosed. In some implementations, video popups can be displayed in a video editor to provide context to a user who is editing a video clip sequence. In some implementations, a user can indicate a position in a video clip sequence where one or more video clips may be added to the video clip sequence and one or more video popups can be presented that display a portion of one or more video clips that are adjacent to the indicated position. Implementations include a method, system and computer-readable medium for performing video context popups.

TECHNICAL FIELD

The disclosure generally relates to graphical user interfaces anddigital video editing.

BACKGROUND

Video editing applications allow users to create, manipulate andaggregate video data. Vendors of video editing applications often seekto provide a user interface that makes video editing applications easyto use. Often vendors attempt to provide an interface with a look andfeel that a user may enjoy.

SUMMARY

Video context popups are disclosed. In some implementations, videopopups can be displayed in a video editor to provide context to a userwho is editing a video clip sequence. In some implementations, a usercan indicate a position in a video clip sequence where one or more videoclips may be added and one or more video popups can be presented thatdisplay a portion of one or more video clips that are adjacent to theindicated position. Implementations include a method, system andcomputer-readable medium for performing video context popups.

Particular implementations provide at least the following advantages: 1)video context popups can make a video editor easier to use by providingcontext for the user's video editing activities; and 2) video contextpopups can save time while editing video clip sequences by automaticallypresenting portions of video clips, e.g., without requiring the user toselect and play the video clips.

Details of one or more implementations are set forth in the accompanyingdrawings and the description below. Other features, aspects, andpotential advantages will be apparent from the description and drawings,and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 illustrates an example video playback user interface.

FIG. 2 illustrates an example video editing user interface.

FIG. 3 illustrates an example of selecting multiple video clips from atimeline.

FIG. 4 illustrates an example of video clip flocking.

FIG. 5A illustrates an example of expanding a space in the timeline toaccommodate selected video clips.

FIG. 5B illustrates an example of video context popups.

FIG. 5C illustrates an example of inserting selected video clips into anew position in the timeline.

FIG. 6 is a block diagram of an example video clip flocking system.

FIG. 7 is a flow diagram of an example video clip flocking process.

FIG. 8 is a flow diagram of an example video context popups process.

FIG. 9 is a block diagram of an example system architecture implementingthe features and processes of FIGS. 1-7.

DETAILED DESCRIPTION

FIG. 1 illustrates an example video playback user interface of a videoediting application. The video playback user interface includes displayenvironment 100. For example, display environment 100 may be anapplication window displayed on a display of a computing device. Thedisplay environment may be configured to display an image 102. Forexample, the image 102 may be a video image having successive frames ofvideo clips or a still image such as a digital photograph. Controlelement 104 includes user interface elements 106, 108 and 110 forcontrolling the display of video. For example, element 106 allows a userto rewind (move the video back in time) a video, element 108 allows auser to play a video, and element 110 allows a user to fast forward avideo. Control element 104 may also include timeline 114 to indicate toa user the duration of a video, how much of the video has been played,or how much of the video remains to be played. Timeline 114 may includeposition indicator 112 to indicate to a user the current position in thetimeline during playback of a video. The video playback interface mayalso provide a user interface element (not shown) for entering an editmode of the video editing application. For example, a user may enter anedit mode of the video editing application by selecting a menu item froma typical pull-down menu or by selecting a user interface elementdisplayed in display environment 100 or displayed on control element104.

FIG. 2 illustrates an example video editing user interface of a videoediting application. The display environment 100 may include controlelement 200. For example, control element 200 may be displayed when thevideo editing application is in an edit mode. Control element 200 may bea semi-transparent overlay control element that allows a user to see thedisplayed image 102 through the control element 200. Control element 200may include user interface element 202 that allows a user to play avideo and a timeline 218 that displays images representing portions of avideo 204-216 (video clips). Thus, the video includes the sequence ofvideo clips 204-216 in timeline 218. Implementations disclosed hereinallow a user to reorder the sequence of video clips 204-216 withintimeline 218 by allowing the user to manipulate images that representeach video clip in the display environment 100.

According to implementations, the video editing application may beconfigured so that video clips may be added to timeline 218 byperforming a drag and drop operation on a video clip. For example, avideo clip outside of display environment 100 (e.g., external to thevideo editing application) may be selected by a user, dragged to alocation in timeline 218, and dropped at the location into the sequenceof video clips 204-216. If no video clips exist in the timeline, theexternal video clip is added to timeline 218. Video clips already intimeline 218 may be rearranged or removed through drag and dropoperations. For example, a user may select a clip in timeline 218 anddrag it to a different location in timeline 218 to modify the sequenceof video clips 204-216. To remove video clips from timeline 218, theuser may select one or more video clips and delete the selected videoclips via a menu item (such as a delete menu item in a pull-down menu)or a keyboard key (such as a delete or backspace key).

FIG. 3 illustrates selecting multiple video clips from a timeline in avideo editing application. Multiple video clips may be selected fromtimeline 218. For example, highlighted video clips 206 and 210 may beselected so that operations may be performed on both clip 206 and clip210 at the same time. Multiple clips may be selected by a user usingcursor 300. For example, a user may position cursor 300 over clip 206and provide a cursor input (e.g., click of a mouse, touch of a touch pador touch screen, etc.) indicating that the user would like to selectclip 206. The appearance of clip 206 can be changed to indicate itsselection status. The user may then position cursor 300 over clip 210and provide input indicating that the user would like to select clip 210in addition to selecting clip 206. For example, to indicate a multipleselection of clip 206 and clip 210 a user may press and hold a key(e.g., command key, shift key, control key, etc.) on a keyboard inaddition to providing the cursor input. Once clip 206 and clip 210 havebeen selected, a user may perform video editing operations on themultiple selected video clips.

FIG. 4 illustrates video clip flocking. Flocking, or gathering of userinterface elements, may be employed to improve the user experience in avideo editing application. For example, a sequence of clips, 204-216,may be in a video being edited. A user may select non-adjacent clips 206and 210, and then drag the selected clips out of their current locationsin timeline 218. According to implementations, when dragged with thecursor, the clips may “flock” together (move closer to one another) asthey move to cursor 300. For example, clips 206 and 210 may move tocursor 300 along respective paths 402 and 404 (or the same path) and bedisplayed at the location of cursor 300 as video clip preview 400. Thus,a user may observe images representing clips 206 and 210 moving across adisplay from their respective locations in timeline 218 to a location ofcursor 300 on the display.

A video clip preview may be presented to a user to provide a contextualpreview of the selected video clips. For example, clip 206 and clip 210may be displayed in preview 400 as a contiguous sequence of video clips.Clip 206 and clip 210 may be positioned in preview 400 in the samerelative order in which they were positioned in timeline 218. The videoclip preview 400 may be moved about display environment 100 using cursor300. For example, a user may move cursor 300 around display environment100 and the video clip preview 400 may move proximate to cursor 300 suchthat cursor 300 and the video clip preview 400 appear to move together.

FIG. 5A illustrates expanding a space in a timeline to accommodateselected video clips. According to an implementation, a contextualpreview of selected video clips is provided that allows selected clipsto be treated as a single clip. For example, if the user drags clip 206and clip 210 between clip 214 and clip 216 and hovers the mouse over theposition between clip 214 and clip 216, a space 500 between clip 214 andclip 216 in timeline 218 will grow to a width that corresponds to thetotal duration of clip 206 and clip 210 thereby giving the user a senseof how long the two clips are relative to clip 214 and clip 216. Growingthe space may be done by a gradual widening of the space between twoclips in the timeline. In other words, growing the space may beperformed by gradually moving two adjacent clips in the timeline apartto create a distance between the two clips that corresponds to the totalduration of the video clips in the preview sequence.

FIG. 5B illustrates an example of video context popups. According tosome implementations, video context popups can be displayed to provide auser additional context for a position in the timeline where a videoclip, or video clips, may be inserted. For example, if the user dragsclip 206 and clip 210 between clip 214 and clip 216 and hovers the mouseor cursor over the position between clip 214 and clip 216, video contextpopups 502 and 504 may be displayed. In some implementations, videocontext popups can provide an enlarged view of portions of video clipsadjacent to the position in the timeline. For example, a video contextpopup may be a window, display area or other user interface element thatcan present or play portions of video clips in a larger format than thethumbnail images displayed for each video clip in timeline 218.Moreover, rather than the still images that may represent each videoclip in timeline 218, the video context popups can display video (e.g.,moving pictures) of portions of video clips in timeline 218.

In some implementations, video context popups can be displayed after thevideo clips 206 and 210 are hovered over the position in the timelinefor a period of time. For example, video context popups may be displayedafter the user hovers the mouse, cursor and/or video clips 206 and 210over the position in the timeline for a period of time (e.g., twoseconds). Delaying the presentation of video context popups may reducethe amount of interference and aggravation that the video context popupsmay cause to a user who already knows where she wants to insert a videoclip and does not desire or require the contextual information that thevideo context popups provide.

In some implementations, video context popups 502 and 504 can displayportions of video clips 214 and 216, respectively. For example, videocontext popup 502 may display the last five seconds of video clip 214.Video context popup 504 may display the first five seconds of video clip216, for example. In some implementations, if the user hovers the mouseand/or video clips 206 and 210 over a position with only one adjacentvideo clip (e.g., a position at the beginning or ending of the videoclip sequence in timeline 218) only one video context popup may bedisplayed.

In some implementations, the portions of the video clips displayed inthe video context popups can be looped. For example, the last 5 seconds(or 7 seconds, 10 seconds, etc.) of video clip 214 may be playedrepeatedly and continuously until the user inserts video clips 206 and210 into the timeline at the position or until the user moves the videoclips to another position in the timeline or cancels the video clipinsertion or move operation.

In some implementations, the portions of the video clips displayed inthe video context popups can be displayed, or played, simultaneously.For example, video context popups 502 and 504 may play back portions ofrespective video clips 214 and 216 simultaneously. The simultaneouslydisplayed portions of the respective video clips 214 and 216 may belooped.

In some implementations, a user may indicate a position within a singlevideo clip into which the user wishes to insert one or more video clips.For example, the user may hover video clips 206 and 210 over a positionin the middle of video clip 212 in timeline 218 and cause video clip 212to split thereby generating two video clips based on video clip 212. Insome implementations, video context popups can be presented thatdisplay, or play back, portions of video clip 212 adjacent to theindicated position. For example, if video clip 212 is 30 seconds longand a user indicates a position at 20 seconds, a first video contextpopup may be presented that displays a portion of video clip 212corresponding to a video clip segment that begins at 15 seconds and endsat 20 seconds of video clip 212. A second video context popup may bepresented that displays a portion of video clip 212 corresponding to avideo clip segment that begins at 20 second and ends at 25 seconds ofvideo clip 212, for example.

In some implementations, the portions of the video clips displayed inthe video context popups can be displayed, or played, in sequence. Insome implementations, the portions of split video clip 212 displayed bythe first and second video context popup may be displayed in sequence.For example, the first video context popup may play its portion of videoclip 212 first and the second video context popup may play its portionof video clip 212 after the first video context popup has played itsportion of video clip 212. In some implementations, the sequentialdisplay of portions of a video clip can be looped in a continuous andalternating fashion. For example, the first video context popup may playits portion of video clip 212 first, the second video context popup mayplay its portion of video clip 212 second and the first video contextpopup may play its portion of video clip 212 again followed by thesecond video context popup.

In some implementations, audio associated with the video clip portionsplayed in the video context popups can be prevented from playing whilepresenting video context popups. For example, if two video contextpopups are displayed and the respective portions of the video clipsdisplayed in the video context popups are played simultaneously, thenaudio for the video clip portions may not be played.

In some implementations, audio associated with the video clip portionspresented in video context popups can be played. For example, if asingle video context popup is presented and a single video clip portionis played, the audio associated with the single video clip portion maybe played. As another example, if two video context popups are presentedand the video clip portions associated with the video context popups areplayed in sequence or simultaneously, then audio may be played for eachvideo context popup.

In some implementations, the audio for a video clip portion is played ona respective audio channel associated with a video context popup. Forexample, if the first video context popup is displayed on the left andthe second video context popup is displayed on the right, the audio forthe first video context popup may be presented on a left audio channeland the audio for the second video context popup may be presented on aright audio channel. For example, all of the audio channels of the videoclip portion displayed in the left video context popup may be mixed tothe left audio channel and all of the channels of the video clip portiondisplayed in the right video context popup may be mixed to the rightaudio channel. Thus, a user can differentiate the audio for the firstvideo context popup and the right video context popup based on therespective audio channels even though the audio for the two video clipportions is being played simultaneously. In some implemetations, theaudio may pan between right and left audio channels in order to allowthe user to associate the audio with the right or left clip,respectively.

In some implementations, the video displayed in a video context popupcan include a portion of a video clip adjacent to the position in thetimeline and a portion of the video clip that may be inserted into theposition in the timeline. For example, when video clips 206 and 210 arehovered between video clip 214 and 216, video context popups 502 and 504may be displayed. Video context popup 502 may display the last fiveseconds of video clip 214 and the first five seconds of video clip 206thereby providing a preview of how the video clips may look when playedin sequence. Similarly, video context popup 504 may display the lastfive seconds of video clip 210 and the first five seconds of video clip216 so that the transition between video clip 210 and video clip 216 maybe previewed by the user.

In some implementations, the video displayed in a video context popupcan include a preview of a transition selected for transitioning betweena video clip (e.g., video clip 214) adjacent to the position in thetimeline and a video clip (e.g., video clip 206) that may be insertedinto the position in the timeline. For example, a transition may beselected either by the user or automatically for transitioning betweenvideo clip 214 and video clip 206. The selected transition may be ahard-cut, a fade, crossfade, dissolve or other transition, for example.When video clips 206 and 210 are hovered between video clip 214 and 216,video context popups 502 and 504 may be displayed. Video context popup502 may display the last five seconds of video clip 214, a selectedtransition, and the first five seconds of video clip 206 therebyproviding a preview of how the video clips and the transition may lookwhen played in sequence. Similarly, video context popup 504 may displaythe last five seconds of video clip 210, a selected transition, and thefirst five seconds of video clip 216 so that the transition betweenvideo clip 210 and video clip 216 may be previewed by the user.

FIG. 5C illustrates inserting selected video clips into a new positionin the timeline 218. For example, preview sequence 400 that includesclips 206 and 210 may be dragged into timeline 218 using cursor 300 anddropped between clip 214 and clip 216. When dropped, clips 206 and 210may be moved from their previous positions in timeline 218 to a newposition between clip 214 and clip 216 in timeline 218. Thus, a user mayuse cursor 300 to cause a drag-and-drop operation to be performed by thevideo editing application that changes the order of the video clips204-216 in the video clip sequence displayed in timeline 218.

FIG. 6 is a block diagram of an example video clip flocking system. Thevideo clip flocking system allows a user to manipulate imagescorresponding to one or more video clips in order to modify a sequenceof video clips being edited in the system. The system is configured toperform operations on video clip sequence 602. For example, video clipsequence 602 may include video clips from a single video or may includevideo clips from several different videos that a user wishes to combineinto a single video using the example system.

In block 604, the video clip sequence is displayed. For example, thevideo clip sequence may be displayed on a timeline, such as timeline 218of FIG. 2, on a user interface of a video editing application. Thetimeline may indicate a present order of the video clips in thesequence. The timeline may also indicate the duration of each video clipand/or the duration of the sequence of video clips.

In block 606, a selection of video clips is received. For example, auser may select one or more video clips displayed in the timeline. Theclips may be adjacent or non-adjacent clips. For example, multiplenon-adjacent clips may be selected.

In block 608, the selected clips are flocked to the cursor. Flocking maybe initiated by dragging one of the selected clips from the timeline.For example, in FIG. 4, if clips 206 and 210 are selected and clip 210is dragged from the timeline, clips 206 and 210 may flock to thelocation of the cursor. Once the clips are dragged from the timeline,the timeline may display empty spaces at the locations in the timelinefrom which the clips were dragged. Alternatively, the timeline maycontinue to display the images of the selected clips after the clips aredragged from the timeline. If non-adjacent clips are selected, each clipmay take a different respective path from their respective locations inthe timeline to the cursor location. For example, images representingeach clip may be displayed in the timeline. Multiple non-adjacent clipsmay be selected and dragged to a location on the display using thecursor. When dragged, the images of the selected clips may move alongrespective paths to the location of the cursor, as illustrated by FIG.4. If adjacent clips are selected from the timeline, the adjacent clipsmay be treated as a single clip as they move from the timeline to thecursor location.

In block 610, a preview sequence of the selected clips is displayed. Forexample, once the selected clips have flocked to the cursor location, apreview sequence of the selected clips may be displayed. The previewsequence may display images corresponding to the selected clips in thesame respective order as they were displayed in the timeline. Thepreview sequence may be moved around the display as if the sequence wasa single clip. For example, a user may use the cursor to move thepreview sequence around the display. Allowing the preview sequence to bemanipulated in this way may allow drag-and-drop operations to beperformed on the video clips in the preview sequence.

The preview sequence of video clips may be held at the cursor untilreleased. For example, a user may select multiple clips from thetimeline and click and hold a mouse button down to drag the clips fromthe timeline. While the user continues to hold the mouse button down, apreview sequence may continue to be displayed at the location of thecursor. If the user releases the mouse button at a location other thanthe timeline or if the user cancels the preview by pressing a keyboardkey (e.g., Esc or Backspace keys), the preview sequence may be releasedcausing the images of the video clips in the preview sequence to returnto the timeline without changing the timeline. For example, when acancel event is received (e.g., the preview is canceled or released) areverse flocking animation may be performed in which the video clipimages in the preview sequence may be shown or animated to move back totheir original positions in the timeline from the video clip preview.When the preview sequence is released, the images may be displayedmoving back to the timeline from the cursor location along respectivepaths. Once the images have reached the timeline, the video clip imagesmay occupy empty spaces in the timeline that were created when the videoclip images were dragged from the timeline.

In block 612, a location in the sequence of clips in the timeline isreceived. For example, a user may move the preview sequence of videoclips as if the sequence was a single clip to a location in thetimeline. The user may hover the preview sequence over the location. Forexample, a user may hold a mouse button down while dragging the previewsequence to the location in the timeline and hover the preview sequenceover the location by continuing to hold the mouse button down while thepreview sequence is held over the location. While hovering the previewsequence over the location in the timeline, the video clips in thetimeline near the location may move to grow a space in the timelinehaving a width that corresponds to the total duration of the video clipsin the preview sequence, as illustrated by FIG. 5A.

In block 614, the selected clips are moved to the location in thetimeline. For example, the preview sequence (sequence of images ofselected clips) may be dragged to a location in the timeline and dropped(mouse button released) into the timeline at the location. When thepreview sequence is dropped into the location in the timeline, theimages of the selected clips may be inserted at the drop location in thetimeline. Dropping the preview sequence into the timeline at thelocation may cause the sequence of video clips in the timeline to bemodified. The modified sequence of video clips in the timeline may begenerated by moving the selected video clips from their previouslocations in the timeline to a new location in the timelinecorresponding to the location in the timeline where the preview sequencewas dropped. Thus, the system may generate and display a modifiedsequence of images in the timeline and generate a modified sequence ofvideo clips 616 that corresponds to the modified sequence of images.

FIG. 7 is a flow diagram of an example video clip flocking process. Atstep 702, a sequence of video clips is displayed. For example, thesequence of video clips may be displayed in the manner disclosed in thedescriptions of FIG. 2 and FIG. 6, above.

At step 704, a selection of video clips is received. For example, aselection of video clips may be received in the manner disclosed in thedescription of FIG. 3 and FIG. 6, above.

At step 706, the selected video clips are flocked to a cursor. Forexample, the selected video clips may be flocked to the cursor in themanner disclosed in the description of FIG. 4 and FIG. 6, above.

At step 708, the selected video clips are dragged to a new location inthe sequence. For example, the selected video clips may be dragged to anew location in the sequence in the manner disclosed in the descriptionof FIG. 5A, FIG. 5C and FIG. 6, above.

At step 710, the selected video clips are moved from their previouslocations in the sequence to new locations in the sequence. For example,the selected video clips may be moved in the sequence in the mannerdisclosed in the description of FIG. 5A, FIG. 5C and block 614 of FIG.6, above.

FIG. 8 is a flow diagram of an example video context popups process. Atstep 802, a sequence of objects having a first size is displayed. Forexample, a sequence of video clips (e.g., video clips 204-216 of FIG. 2)may be displayed on an interface (e.g., interface 100) of a video clipediting application running on a computing device. The video clipsequence may include thumbnail images representing each video clip inthe video clip sequence. In some implementations, the sequence ofobjects can be a sequence of photographs or still images. In someimplementations, the objects in the sequence of objects may have aparticular display size.

At step 804, input is received that indicates a position in the sequenceof objects. For example, a user may indicate a position within thesequence of video clips where a video clip may be inserted or moved. Forexample, a user may wish to add a video clip to the video clip sequenceand indicate a position in the sequence where the user is consideringplacing the video clip. A user may wish to move a video clip from aposition in the video clip sequence to another position in the videoclip sequence and indicate a position in the sequence where the user isconsidering moving the video clip. In some implementations, a user mayindicate the position by hovering a cursor, mouse pointer, or a videoclip over a position in the displayed video clip sequence.

At step 806, an enlarged view of one or more objects adjacent to theindicated position is presented. For example, once the user hasindicated a position in the video clip sequence, video clips adjacent tothe position in the timeline may be determined. In some implementations,there can be one adjacent video clip. For example, if the indicatedposition is at the beginning or end of the video clip sequence, thenthere may be only one video clip adjacent to the indicated position. Insome implementations, there can be two adjacent video clips. Forexample, if the indicated position is in the middle of the video clipsequence, or in the middle of a video clip, there may be two video clipsadjacent to the indicated position. In some implementations, the usermay indicate a position in the middle of a single video clip and thevideo clip may be split to generate two video clips so that anothervideo clip can be placed in between the two generated video clips. Forexample, portions of the two generated video clips may be displayed inrespective video context popups.

According to some implementations, a video context popup can bedisplayed for each adjacent video clip to present an enlarged view ofeach adjacent video clip. For example, the video clips in the video clipsequence may be represented by one or more still images. The one or morestill images may have a small size that is difficult for the user to seeand that makes the video context surrounding a particular position inthe video clip sequence difficult to ascertain. The video contextsurrounding the particular position may be difficult to ascertainbecause the still images used to represent video clips may not provideenough contextual information to identify the adjacent video clips(e.g., a user may need to view several video frames or short duration ofvideo to properly ascertain the video context).

In some implementations, portions of adjacent video clips can bedisplayed having a larger size than the video clip images displayed inthe video clip sequence. For example, a window or display area havingbigger dimensions than that of the video clip images displayed in thevideo clip sequence may be displayed, or popped up, on the userinterface of a video editing application. In some implementations, theportions of the adjacent video clips can be displayed according to thelarger dimensions of the popped up display area. In someimplementations, the adjacent video clips are displayed as motionpictures (e.g., a series of frames, video) rather than still images, asdisclosed above with reference to FIG. 5B. In some implementations, thevideo context popups can display portions of adjacent video clips,portions of video clips to be inserted or moved and/or transitionsselected for transitioning between the adjacent video clips and thevideo clips to be inserted or moved.

Example System Architecture

FIG. 9 is a block diagram of an example system architecture implementingthe features and processes of FIGS. 1-8. The architecture 900 can beimplemented on any electronic device that runs software applicationsderived from compiled instructions, including without limitationpersonal computers, servers, smart phones, media players, electronictablets, game consoles, email devices, etc. In some implementations, thearchitecture 900 can include one or more processors 902, one or moreinput devices 904, one or more display devices 906, one or more networkinterfaces 908 and one or more computer-readable mediums 910. Each ofthese components can be coupled by bus 912.

Display device 906 can be any known display technology, including butnot limited to display devices using Liquid Crystal Display (LCD) orLight Emitting Diode (LED) technology. Processor(s) 902 can use anyknown processor technology, including but are not limited to graphicsprocessors and multi-core processors. Input device 904 can be any knowninput device technology, including but not limited to a keyboard(including a virtual keyboard), mouse, track ball, and touch-sensitivepad or display. Bus 912 can be any known internal or external bustechnology, including but not limited to ISA, EISA, PCI, PCI Express,NuBus, USB, Serial ATA or FireWire. Computer-readable medium 910 can beany medium that participates in providing instructions to processor(s)902 for execution, including without limitation, non-volatile storagemedia (e.g., optical disks, magnetic disks, flash drives, etc.) orvolatile media (e.g., SDRAM, ROM, etc.).

Computer-readable medium 910 can include various instructions 914 forimplementing an operating system (e.g., Mac OS®, Windows®, Linux). Theoperating system can be multi-user, multiprocessing, multitasking,multithreading, real-time and the like. The operating system performsbasic tasks, including but not limited to: recognizing input from inputdevice 904; sending output to display device 906; keeping track of filesand directories on computer-readable medium 910; controlling peripheraldevices (e.g., disk drives, printers, etc.) which can be controlleddirectly or through an I/O controller; and managing traffic on bus 912.Network communications instructions 916 can establish and maintainnetwork connections (e.g., software for implementing communicationprotocols, such as TCP/IP, HTTP, Ethernet, etc.).

A graphics processing system 918 can include instructions that providegraphics and image processing capabilities. For example, the graphicsprocessing system 918 can implement the video context popups, asdescribed with reference to FIGS. 1-7.

Application(s) 920 can be an image processing application or any otherapplication that uses video context popups described in reference toFIGS. 1-7, such as a photo or video editor. Video context popups canalso be implemented in operating system 914.

The described features can be implemented advantageously in one or morecomputer programs that are executable on a programmable system includingat least one programmable processor coupled to receive data andinstructions from, and to transmit data and instructions to, a datastorage system, at least one input device, and at least one outputdevice. A computer program is a set of instructions that can be used,directly or indirectly, in a computer to perform a certain activity orbring about a certain result. A computer program can be written in anyform of programming language (e.g., Objective-C, Java), includingcompiled or interpreted languages, and it can be deployed in any form,including as a stand-alone program or as a module, component,subroutine, or other unit suitable for use in a computing environment.

Suitable processors for the execution of a program of instructionsinclude, by way of example, both general and special purposemicroprocessors, and the sole processor or one of multiple processors orcores, of any kind of computer. Generally, a processor will receiveinstructions and data from a read-only memory or a random access memoryor both. The essential elements of a computer are a processor forexecuting instructions and one or more memories for storing instructionsand data. Generally, a computer will also include, or be operativelycoupled to communicate with, one or more mass storage devices forstoring data files; such devices include magnetic disks, such asinternal hard disks and removable disks; magneto-optical disks; andoptical disks. Storage devices suitable for tangibly embodying computerprogram instructions and data include all forms of non-volatile memory,including by way of example semiconductor memory devices, such as EPROM,EEPROM, and flash memory devices; magnetic disks such as internal harddisks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, ASICs (application-specific integrated circuits).

To provide for interaction with a user, the features can be implementedon a computer having a display device such as a CRT (cathode ray tube)or LCD (liquid crystal display) monitor for displaying information tothe user and a keyboard and a pointing device such as a mouse or atrackball by which the user can provide input to the computer.

The features can be implemented in a computer system that includes aback-end component, such as a data server, or that includes a middlewarecomponent, such as an application server or an Internet server, or thatincludes a front-end component, such as a client computer having agraphical user interface or an Internet browser, or any combination ofthem. The components of the system can be connected by any form ormedium of digital data communication such as a communication network.Examples of communication networks include, e.g., a LAN, a WAN, and thecomputers and networks forming the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork. The relationship of client and server arises by virtue ofcomputer programs running on the respective computers and having aclient-server relationship to each other.

One or more features or steps of the disclosed embodiments can beimplemented using an API. An API can define on or more parameters thatare passed between a calling application and other software code (e.g.,an operating system, library routine, function) that provides a service,that provides data, or that performs an operation or a computation.

The API can be implemented as one or more calls in program code thatsend or receive one or more parameters through a parameter list or otherstructure based on a call convention defined in an API specificationdocument. A parameter can be a constant, a key, a data structure, anobject, an object class, a variable, a data type, a pointer, an array, alist, or another call. API calls and parameters can be implemented inany programming language. The programming language can define thevocabulary and calling convention that a programmer will employ toaccess functions supporting the API.

In some implementations, an API call can report to an application thecapabilities of a device running the application, such as inputcapability, output capability, processing capability, power capability,communications capability, etc.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made. For example, othersteps may be provided, or steps may be eliminated, from the describedflows, and other components may be added to, or removed from, thedescribed systems. Accordingly, other implementations are within thescope of the following claims.

What is claimed is:
 1. An editing method comprising: generating data fordisplaying a sequence of objects in an interface of a computing device,each of the objects in the sequence having a first display size;receiving a selection input of an insertion object; receiving aninsertion input indicating a position adjacent to at least one object inthe sequence of objects; generating a context popup for automaticallypresenting an enlarged view of at least a portion of the at least oneobject, in response to the insertion input; and displaying the view inthe context popup adjacent to the at least one object in the sequence ofobjects, the enlarged view having a second display size that is largerthan the first display size.
 2. The method of claim 1, wherein thesequence of objects is a sequence of video clips.
 3. The method of claim1, further comprising: generating transition data for presenting atransition of the insertion object to the position indicated by theinsertion input.
 4. The method of claim 1, further comprising:generating a second context popup for presenting a second view of atleast a portion of a second object.
 5. The method of claim 1, furthercomprising: receiving a second selection of a second insertion object;and flocking the insertion object and the second insertion object to acursor location.
 6. The method of claim 5, further comprising:presenting a contextual preview including: the portion of the insertionobject, the second insertion object, and the portion of the at least oneobject.
 7. The method of claim 5, wherein displaying the sequence ofobjects includes, in response to the insertion input, expanding a spacein the sequence of objects to accommodate the insertion object and thesecond insertion object.
 8. A non-transitory computer-readable mediumincluding one or more sequences of instructions which, when executed byone or more processors, causes: generating data for displaying asequence of objects in an interface of a computing device, each of theobjects in the sequence having a first display size; receiving aselection input of an insertion object; receiving an insertion inputindicating a position adjacent to at least one object in the sequence ofobjects; generating a context popup for automatically presenting anenlarged view of at least a portion of the at least one object, inresponse to the insertion input; and displaying the view in the contextpopup adjacent to the at least one object in the sequence of objects,the enlarged view having a second display size that is larger than thefirst display size.
 9. The non-transitory computer-readable medium ofclaim 8, wherein the sequence of objects is a sequence of video clips.10. The non-transitory computer-readable medium of claim 8, wherein for:generating transition data for presenting a transition between theinsertion object, and the view of at least the portion of the at leastone object in the sequence of objects.
 11. The non-transitorycomputer-readable medium of claim 8, wherein the instructions compriseinstructions for: receiving input indicating a position adjacent to asecond object in the sequence of objects; and generating data forpresenting a second view of at least a portion of the second adjacentobject.
 12. The non-transitory computer-readable medium of claim 8, theinstructions comprise instructions for: receiving a second selection ofa second insertion object; and flocking the insertion object and thesecond insertion object to a cursor location.
 13. The non-transitorycomputer-readable medium of claim 12, the instructions compriseinstructions for: presenting a contextual preview including: the portionof the insertion object, the second insertion object, and the portion ofthe at least one object.
 14. The non-transitory computer-readable mediumof claim 12, wherein displaying the sequence of objects includes, inresponse to the insertion input, expanding a space in the sequence ofobjects to accommodate the insertion object and the second insertionobject.
 15. A system comprising: at least one processor; and acomputer-readable storage medium storing instructions which, whenexecuted by the at least one processor, causes: generating data fordisplaying a sequence of objects in an interface of a computing device,each of the objects in the sequence having a first display size;receiving a selection input of an insertion object; receiving aninsertion input indicating a position adjacent to at least one object inthe sequence of objects; generating a context popup for automaticallypresenting an enlarged view of at least a portion of the at least oneobject, in response to the insertion input; and displaying the view inthe context popup adjacent to the at least one object in the sequence ofobjects, the enlarged view having a second display size that is largerthan the first display size.
 16. The system of claim 15, wherein thesequence of objects is a sequence of video clips.
 17. The system ofclaim 15, wherein the instructions comprise instructions for: generatingtransition data for presenting a transition between the insertionobject, and the view of at least the portion of the at least one objectin the sequence of objects.
 18. The system of claim 15, wherein theinstructions comprise instructions for: generating a second contextpopup for presenting a second view of at least a portion of a secondobject.
 19. The system of claim 15, wherein the instructions compriseinstructions for: receiving a second selection of a second insertionobject; and flocking the insertion object and the second insertionobject to a cursor location.
 20. The system of claim 19, wherein theinstructions comprise instructions for: presenting a contextual previewincluding: the portion of the insertion object, the second insertionobject, and the portion of the at least one object.
 21. The system ofclaim 19, wherein displaying the sequence of objects includes, inresponse to the insertion input, expanding a space in the sequence ofobjects to accommodate the insertion object and the second insertionobject.